package JZ.JZ32;

/**
 * @author corn
 * @create 2020-08-14-19:47
 */

import java.util.ArrayList;
import java.util.List;

/**
 * JZ32 把数组排成最小的数
 * 题目描述
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
 * 例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
 */
public class Solution {
    public String PrintMinNumber(int [] numbers) {
        if(numbers == null|| numbers.length == 0){
            return null;
        }
        int len = numbers.length;
        //冒泡法，把拼接大的数往后挪。
        for(int i = 0; i < len; i++){
            for(int j = 0; j < len-i-1; j++){
                String s1 = "" + numbers[j] + numbers[j+1];
                String s2 = "" + numbers[j+1] + numbers[j];
                if(s1.compareTo(s2) > 0){
                    int temp = numbers[j];
                    numbers[j] = numbers[j+1];
                    numbers[j+1] = temp;
                }
            }
        }
        //将最后调整好的数组拼接在一起。
        String string = String.valueOf(numbers[0]);
        for(int i = 1; i < len; i++){
            string = string + numbers[i];
        }
        return string;
    }
}
